package aplicaciones;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;

import modelo.Restaurante;
import modelo.gestionFacturacion.Factura;
import modelo.gestionPedidos.Pedido;
import modelo.gestionReserva.Mesa;
import modelo.gestionReserva.Reserva;
import GUI.RestauranteGrafico;
/**
 * Esta clase representa la aplicación que va a ejecutarse en el ordenador principal del restaurante
 * (el que van a usar el metre y/o el encargado)
 * 
 * @created 02-may-2007 14:35
 * @version 2.0
 * @author Carlos Rodríguez Domínguez, Luis Miguel Merino Bonilla, Enrique Menor Santos, Eusebio J. Aguilera Aguilera
 */
public class Main {
	/**
	 * Referencia estática al objeto que representa el Restaurante
	 */
	public static Restaurante m_Restaurante;


	/**
	 * Constructor vacío
	 *
	 */
    public Main() {

    }

    /**
     * Ejecuta la aplicación principal
     */
    @SuppressWarnings("deprecation")
	public static void main(String[] args)
    {
    	
    	/**
    	 * Direccion ip donde esta el servidor RMI.
    	 */
    	String ip = "";
		
		File f = new File("IPServidorRMI.txt");
		FileReader fr = null;
		try {
			fr = new FileReader(f);
		} catch (FileNotFoundException e) {
			System.err.println("Error en apertura de fichero de Servidor RMI. No se ha encontrado el fichero IPServidorRMI.txt");
			System.exit (1);	
		}
		BufferedReader br = new BufferedReader(fr);
		try {
			ip = br.readLine();
		} catch (IOException e) {
			System.err.println("Error en lectura de fichero de Servidor RMI: " + e.getMessage());
			System.exit (2);
		}
		if (ip==null ||ip.equals(""))
		{
			System.err.println("Error en lectura de la IP desde el fichero IPServidorRMI.txt");
			System.exit (3);
		}
		// Si todo va bien construimos el objeto restaurante y le pasamos como parametro la direccion  ip del servidor RMI
    	
    	if (args.length > 0)
    	{
    		try {
				
				// Usamos el constructor correcto para crear el objeto restaurante con la ip
				// Cambio de la segunda iteracion
				m_Restaurante = new Restaurante(Integer.parseInt(args[0]), ip);
			} catch (NumberFormatException e) {
				//e.printStackTrace();
				System.err.println("Error en la clase Main en el metodo main: " + e.getMessage());
			}
    	}
    		
    	else
    	{
    		//Usamos el constructor correcto para crear el objeto restaurante con la ip
			//Cambio de la segunda iteracion
			m_Restaurante = new Restaurante(1, ip);
    	}
        
    	if (m_Restaurante != null)
    	{
    		new RestauranteGrafico();//inicializa la GUI
    	}
    	else
    		System.err.println("El restaurante no ha podido obtenerse de la BD, por lo que no se ha iniciado la aplicación MAIN.");
    
    	
    	Pedido  p = m_Restaurante.getPedido(18);
    	
    	Factura fact = new Factura(p, 12345, Calendar.getInstance().getTime(), 'e', "Joseillo", 2);
    	
    	System.out.println(fact.toString());
    	
    	fact.imprimir();
    	
    	
    }
    
    
}
